<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>OpenSSH Project Goals</title>
<link rev=made href="mailto:www@openbsd.org">
<meta name="resource-type" content="document">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="description" content="the OpenSSH project goals page">
<meta name="keywords" content="openbsd,goals">
<meta name="distribution" content="global">
<meta name="copyright" content="This document copyright 1999-2004 by OpenBSD.">
</head>

<body bgcolor="#ffffff" text="#000000" link="#23238E">

<a href="index.html"><img alt="[OpenSSH]" height="30" width="141" src="images/smalltitle.gif" border="0"></a>
<p>
<h2><font color="#e00000">Project Goals</font></h2>
<hr>

Our goal is simple: Since telnet and rlogin are insecure, all
operating systems should ship with support for the SSH protocol
included.  (See the picture below).
<p>

The SSH protocol is available in two incompatible varieties:
SSH 1 and SSH 2.
<p>

The older SSH 1 protocol comes in two major sub-variants:
protocol 1.3 and protocol 1.5.  Both are supported by OpenSSH.
Both of these use the asymmetric cryptography algorithm
<a href="http://www.openbsd.org/cgi-bin/man.cgi?query=rsa">RSA</a>
(for which the USA patent has expired, allowing full use by everyone)
for key negotiation, and then use a
short list of symmetric algorithms for data hiding: 
<a href="http://www.openbsd.org/cgi-bin/man.cgi?query=des_crypt">3DES</a>
and
<a href="http://www.openbsd.org/cgi-bin/man.cgi?query=blowfish">Blowfish</a>.
(There used to be a few other algorithms like RC4, but their 
implementations had security problems).
Some SSH 1 protocol implementations also support the IDEA symmetric
algorithm, but since this algorithm is patented in some nations, and
because the other two supplied algorithms are sufficient, OpenSSH ships
without support for IDEA.
<p>

The SSH 1 protocol uses a simple CRC for data integrity, which turns out
to be flawed; an insertion attack is known to be possible, however due
to a number of bandaids which have been applied to SSH implementations over the years,
attacks against it are very difficult to perform.  When the 3DES cipher
is used, the insertion attack is significantly less possible.  (We may
solve this soon).
<p>

The second major variety of SSH is the SSH 2 protocol.  SSH 2 was
invented to avoid the patent issues regarding RSA (patent issues which
no longer apply, since the patent has expired), and to fix the CRC data
integrity problem that SSH1 has, and for a number of other technical
reasons.  By using the asymmetric
<a href="http://www.openbsd.org/cgi-bin/man.cgi?query=dsa">DSA</a>
and
<a href="http://www.openbsd.org/cgi-bin/man.cgi?query=dh">DH</a>
algorithms,
protocol 2 avoids all patents.  The CRC problem is also solved by
using a real
<a href="http://www.openbsd.org/cgi-bin/man.cgi?query=HMAC">HMAC</a>
algorithm.  SSH 2 protocol supports many other choices for symmetric
ciphers, as well as many other new features.
<p>

OpenSSH code including full SSH 1.3 and SSH 1.5 protocol support
shipped on December 1, 1999.
<p>

For many of its cryptography features, OpenSSH relies on the non-GPL'd
<a href="http://www.openssl.org">OpenSSL</a> library.
<p>

Almost immediately after we shipped our SSH 1 protocol implementation,
various non-OpenBSD groups got very, very interested.  Damien Miller,
Philip Hands, and handful of others started porting OpenSSH to Linux
and various other Unix operating systems.  From the start of our own
efforts, we have felt that even the original SSH implementation was too
complicated; it simply had too many operating system dependencies to
deal with.  Our approach to writing completely secure and rock solid
code avoids dealing with excessive differences like that.  Thus, to
make the entire development process easier on us all, we decided to
split our core development efforts from portability developments.
This has worked out very well for us.  (As a case in point, compare the
number of lines of code between the baseline and portable versions).
<p>

Continuing that trend, the OpenBSD project members who worked on
OpenSSH made a push at supporting the SSH 2 protocol as well.  This
work was primarily done by Markus Friedl.  Around May 4, 2000, the
SSH 2 protocol support was implemented sufficiently to be useable.
<p>

<hr>
<h2><font color="#e00000">Are you still using "in the clear" logins?</font></h2>

<img width=500 height=417 src="images/shherrif.jpg" alt=sheriff>

<hr>
<a href="index.html"><img height=24 width=24 src="back.gif" border=0 alt=OpenSSH></a>
<a href="mailto:www@openbsd.org">www@openbsd.org</a>
<br>
<small>$OpenBSD: goals.html,v 1.20 2006/04/24 21:48:37 deraadt Exp $</small>

</body>
</html>
